BigDecimal保留两位小数 您所在的位置:网站首页 BigDecimal如何相除并保留小数后两位多种方法比较可选 BigDecimal保留两位小数

BigDecimal保留两位小数

2023-10-18 22:33| 来源: 网络整理| 查看: 265

文章目录 前言1.代码实现2.方法详解 注释

前言

在项目中经常会用到小数的一些计算,而float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确。所以有时候必须要采用BigDecimal。

1.代码实现

代码如下(示例):

public class Demo { public static void main(String[] args) { BigDecimal a =null; Integer faultRate = 6; a = BigDecimal.valueOf(faultRate.doubleValue()/3); BigDecimal b =a.setScale(2, RoundingMode.HALF_UP);//保留两位小数 System.out.println("结果是"+b); //下面将结果转化成百分比 NumberFormat percent = NumberFormat.getPercentInstance(); percent.setMaximumFractionDigits(2); System.out.println(percent.format(b.doubleValue())); } }

运行结果: 在这里插入图片描述

2.方法详解

BigDecimal.setScale()方法用于格式化小数点

setScale(1)表示保留一位小数,默认用四舍五入方式

setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3

setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4

setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍

setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入

setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有